大家好
今天要開始來動手開發我們的第一支ALV報表,
當然開發之前要先來定程式的規格,
包含資料來源、程式的邏輯、要呈現的欄位等等,
之後有機會再分享規格書撰寫的部分!
公司想要檢討庫存量太高的問題,決定請SAP部門開發一支可以顯示公司內物料庫齡的報表,來檢討庫齡太高的物料
這個讓用戶輸入參數的介面在ABAP叫做Selection screen 選擇畫面
根據我們做完系統分析的結果,
大概可以知道我們的介面會需要以下參數讓用戶輸入
1.Material number
讓使用者可以選擇想查的Material
2.plant
選擇想查詢庫存的工廠
3.Material type
可以依物料類型做篩選,例如只想抓工廠內所有的製成品or半成品or原物料
selection-screen begin of block b1 with frame title text-001.
select-options : p_matnr for mara-matnr.
PARAMETERS: p_werks TYPE marc-werks OBLIGATORY DEFAULT '0001'.
selection-screen end of block b1.
我們會得到一個這樣的畫面
用來將相關的參數或選擇選項分組,並且可以指定標題或定義多個區域,text-001就是這個區塊的名稱參數
用於定義範圍或多重選擇輸入,例如允許用戶輸入物料號的範圍(從 X 到 Y),或者輸入多個值。這非常適合報表的多重條件查詢
SELECTION-SCREEN COMMENT 用於在畫面上添加文字或說明,通常用來解釋參數的用途或提示用戶輸入格式。
PARAMETERS 語法用於定義單一的輸入字段,通常用來輸入單個值,因為我們不希望讓使用者可以一次搜尋多的工廠的庫存讓報表太混亂,所以工廠別設為單個值不設區間
將這個欄位這為必填的欄位
設定欄位的預設值
除了這些基本用法外也可以利用
SELECTION-SCREEN PUSHBUTTON 可以添加按鈕,並且與特定事件(如用戶點擊按鈕)綁定,這樣可以實現一些自定義的操作(如匯出報表、執行額外邏輯等)。
SELECTION-SCREEN PUSHBUTTON /10(20) text-003 USER-COMMAND 'EXEC'.
當按鈕被點擊時,系統會將 'EXEC' 傳給 sy-ucomm,觸發事件處理。
還有
AT SELECTION-SCREEN 事件用於處理參數輸入的邏輯,例如檢查用戶輸入的有效性、根據條件動態修改畫面等。
例如設定用戶輸入的時間不能小於現在時間
AT SELECTION-SCREEN.
IF p_date < sy-datum.
MESSAGE 'Date cannot be in the past' TYPE 'E'.
ENDIF.
以上就是今天的selection screen 介紹